/* 
 * File:   main.cpp
 * Author: usuario
 *
 * Created on 9 de abril de 2013, 18:09
 */

#include <cstdlib>
#include <iostream>
#include <vector>
#include "Directorio.h"
#include "Archivo.h"
#include "Usuario.h"
#include "Grupo.h"
#include "Recurso.h"
#include "RecursoUtil.h"


using namespace std;

/*
 * 
 */
int main() {
    vector<Recurso*> Contenido;
    Recurso *r;
    
    string NombreArchivosRecursos="recursos.csv";
    
    int tamGrupos=0;
    int maxGrupos=10;
    
    Grupo* *grupos;
    grupos=new Grupo*[maxGrupos];
    
    int tamUsuarios=0;
    int maxUsuarios=10;
    
    Usuario* *usuarios=new Usuario*[maxUsuarios];
    
    grupos[tamGrupos++]=new Grupo("Administradores",10);
    grupos[tamGrupos++]=new Grupo("Clientes",10);
    
    usuarios[tamUsuarios++]=new Usuario("root","@777%",10);//Creamos un usuario
    usuarios[0]->AddGrupo(grupos[0]);
    usuarios[tamUsuarios++]=new Usuario("cliente1","123456",5);//Creamos un usuario
    usuarios[1]->AddGrupo(grupos[1]);
    
    Directorio* raiz=new Directorio("/","","3-5-2013",usuarios[0],grupos[0],7,7,4);
    Archivo* a=new Archivo("Hola mundo","/","2-2-2012",40,".txt",usuarios[0],grupos[0],7,7,4);
    raiz->addRecurso(a);
    raiz->nuevoArchivo("instrucciones","03-05-2013",40,".txt",usuarios[1],grupos[1],7,7,4);//este metodo crea un nuevo archivo y lo mete en el contenido del directorio "raiz"
    raiz->nuevoArchivo("archivo2","2-2-2013",80,".doc",usuarios[1],grupos[1],5,2,4);//este metodo crea un nuevo archivo y lo mete en el contenido del directorio "raiz"
    raiz->nuevoDirectorio("dir1","20-2-2013",usuarios[0],grupos[0],7,7,4);//este metodo crea un nuevo directorio y lo mete en el contenido del directorio "raiz"
    Directorio* dir1=raiz->getDirectorio("dir1");//buscamos en el directorio "raiz" un directorio con el nombre que se pasa como parametro y devuelve un puntero al objeto
    dir1->nuevoArchivo("documentacion","20-2-2013",10,".txt",usuarios[1],grupos[1],7,7,4);
    raiz->nuevoDirectorio("etc","2-5-2013",usuarios[0],grupos[0],7,7,4);
    Directorio* etc=raiz->getDirectorio("etc");
    etc->nuevoArchivo("nvidia","20-06-2013",20,".conf",usuarios[0],grupos[0],7,7,4);
    
    /*Guardar los datos en formato CSV*/
    
    r->guardaCSV(Contenido,NombreArchivosRecursos);
    
    /*Leer los datos del fichero CSV*/
    vector<Recurso*> w;
    r->recuperarCSV(w,NombreArchivosRecursos);
    cout<<"Recursos leidas del fichero "<<endl;
    r->visualiza(w);
    
    raiz->listarArbol();
    //raiz->chmod(3,3,3);
    raiz->verPermisos();
    raiz->ls();
    etc->ls();
    
    
    /*Ejemplos de CSV*/
      Archivo* a2=etc->getArchivo("nvidia");
      cout<<"Ejemplo del CSV del archivo              "<<a2->toCSV()<<endl;    

      cout<<"Ejemplo del CSV del directorio           "<<etc->toCSV();
    /*Fin de ejemplos de CSV*/
    
    
    for(int i=0;i<tamUsuarios;i++){
          delete usuarios[i];
    }
    for (int i=0;i<tamGrupos;i++){
          delete grupos[i];
    }
    //delete raiz;
   // delete a;
    return 0;
}

